7.8 分组后的过滤处理
分组后的过滤,是以组为单位过滤,而不是过滤分组中的某条记录,关于分组的过滤可以使用filter()函数,结构如下:
Filter(func,dropna=True,*args,**kwargs)
func :应用于每个DataFrame子表的函数,应该返回布尔值True或False
dropna :删除未通过删除的组,默认为True
*args :传递给func的位置参数
**kwargs :传递给func的关键字参数
import pandas as pd,numpy as np
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.08 分组后的过滤处理.xlsx" )
print (df)
df1=df.groupby( "日期" ).filter( lambda d:np.all(d.iloc[:, 2 :].apply( lambda s:s.sum()>=15, axis = 1 )))
print (df1)
返回:
日期 | 成员 | A产品 | B产品 | |
---|---|---|---|---|
0 | 2021-05-01 | 张三 | 9 | 8 |
1 | 2021-05-01 | 李四 | 10 | 5 |
2 | 2021-05-02 | 王麻子 | 4 | 9 |
3 | 2021-05-02 | 许流子 | 5 | 13 |
4 | 2021-05-03 | 郭流子 | 4 | 9 |
5 | 2021-05-03 | 小曾 | 6 | 7 |
6 | 2021-05-03 | 韦大宝 | 13 | 4 |
日期 | 成员 | A产品 | B产品 | |
---|---|---|---|---|
0 | 2021-05-01 | 张三 | 9 | 8 |
1 | 2021-05-01 | 李四 | 10 | 5 |